With the complexity and interoperability of software and hardware today, it is very difficult to install one program without having an effect on one or more pre-existing programs. Microsoft® Windows® operating systems have a plethora of components that all must maintain their integrity, otherwise the operating system becomes unstable and possibly fails. Furthermore, generally when hardware is installed, software drivers which allow the hardware to communicate with the software, must be installed as well. If these drivers are corrupted, the hardware will not function properly. Additionally, many software programs have components beyond a main executable file which allow the programs to communicate with the operating system, and if these components are deleted or modified incorrectly, the program will no longer function. All of these components, whether they be part of the operating system, hardware or other software, must be able to co-exist without harming each other. Specifically, when the system is modified in some way such as by installing a new piece of hardware or a software program, the system must do it so that everything still functions correctly.
According to research, almost 30% of application failures are related to installation and configuration errors. There are a number of products available to aid in installation of software onto a user's computer such as InstallShield, made by InstallShield Software Corp. Programs such as InstallShield create a single executable installation file. With InstallShield, a software developer uses templates and pre-built interface objects that enable easy packaging of the software such that the installation files and software files can be accessed and invoked from a single executable installation file. Thus, users who install software packaged with InstallShield are able to install the program quickly with hopes of not affecting other applications or system characteristics. The user obtains the file and invokes it to begin the software installation. The installation files are automatically decompressed to a temporary directory, and a setup file is invoked. Once the software has been installed, the temporary directory is erased. Problems may arise if the user disrupts the software program during installation. Furthermore, InstallShield does not necessarily adequately check to ensure the new program will perfectly run without harming the system. InstallShield attempts to avoid installation failures by helping developers create setups that install correctly. The problem is that software installations are still often problematic. Software installations fail due to the existing software and hardware environment. Software installations often test for dependent hardware and software, but these tests are many times inadequate. Missing hardware drivers and back revisions of dependent software cause software installations to fail or become unstable after installation is complete. Software installations often conflict with existing software packages. Furthermore, software installations overlay common library modules into common shared directories. Software installations which behave incorrectly break existing software packages or sometimes make the entire computer system unstable.
Some software installation systems create software packages and include a wizard to help the user through installations and pre-check the computing environment for software prerequisites as described above. However, these software installation systems have many deficiencies. The tests are not comprehensive and often do not perform any hardware tests. Existing packages do not work well in conjunction with software deployment systems. These existing packages also lack an ability to grow with new problems discovered by users. Furthermore, existing systems are not service provider friendly. Hence, a solution is needed to overcome these issues.